查看原文
其他

SciencePlots | 科研样式绘图库

大邓 大邓和他的Python 2022-07-09


安装

!pip3 install SciencePlots

tips:

SciencePlots库需要电脑安装LaTex,其中

  • MacOS电脑安装MacTex https://www.tug.org/mactex/
  • Windows电脑安装MikTex https://miktex.org/

初始化绘图样式

在SciencePlots库中科研绘图样式都是用的science

import matplotlib.pyplot as plt

plt.style.use('science')

当然你也可以同时设置多个样式

plt.style.use(['science''ieee'])

在上面的代码中, ieee 会覆盖掉 science 中的某些参数(列宽、字号等), 以达到符合 IEEE论文的绘图要求

如果要临时使用某种绘图样式,科研使用如下语法

#注意,此处是语法示例,
#如要运行, 请提前准备好x和y的数据
with plt.style.context(['science''ieee']):
    plt.figure()
    plt.plot(x, y)
    plt.show()

案例

定义函数曲线, 准备数据

import numpy as np
import matplotlib.pyplot as plt

def function(x, p):
    return x ** (2 * p + 1) / (1 + x ** (2 * p))

pparam = dict(xlabel='Voltage (mV)', ylabel='Current ($\mu$A)')

x = np.linspace(0.751.25201)

science样式

with plt.style.context(['science']):
    fig, ax = plt.subplots()
    for p in [1015203050100]:
        ax.plot(x, function(x, p), label=p)
    ax.legend(title='Order')
    ax.autoscale(tight=True)
    ax.set(**pparam)
    fig.savefig('figures/fig1.pdf')
    fig.savefig('figures/fig1.jpg', dpi=300)

science+ieee样式

针对IEEE论文准备的science+ieee样式

with plt.style.context(['science''ieee']):
    fig, ax = plt.subplots()
    for p in [102040100]:
        ax.plot(x, function(x, p), label=p)
    ax.legend(title='Order')
    ax.autoscale(tight=True)
    ax.set(**pparam)
    # Note: $\mu$ doesn't work with Times font (used by ieee style)
    ax.set_ylabel(r'Current (\textmu A)')  
    fig.savefig('figures/fig2a.pdf')
    fig.savefig('figures/fig2a.jpg', dpi=300)

science+scatter样式

IEEE 要求图形以黑白打印时必须可读。ieee 样式还可以将图形宽度设置为适合IEEE论文的一列。

with plt.style.context(['science''scatter']):
    fig, ax = plt.subplots(figsize=(44))
    ax.plot([-22], [-22], 'k--')
    ax.fill_between([-22], [-2.21.8], [-1.82.2],
                    color='dodgerblue', alpha=0.2, lw=0)
    for i in range(7):
        x1 = np.random.normal(00.510)
        y1 = x1 + np.random.normal(00.210)
        ax.plot(x1, y1, label=r"$^\#${}".format(i+1))
    ax.legend(title='Sample', loc=2)
    xlbl = r"$\log_{10}\left(\frac{L_\mathrm{IR}}{\mathrm{L}_\odot}\right)$"
    ylbl = r"$\log_{10}\left(\frac{L_\mathrm{6.2}}{\mathrm{L}_\odot}\right)$"
    ax.set_xlabel(xlbl)
    ax.set_ylabel(ylbl)
    ax.set_xlim([-22])
    ax.set_ylim([-22])
    fig.savefig('figures/fig3.pdf')
    fig.savefig('figures/fig3.jpg', dpi=300)

dark_background +science+high-vis

您还可以将这些样式与Matplotlib随附的其他样式结合使用。例如,dark_background +science+high-vis样式:

with plt.style.context(['dark_background''science''high-vis']):
    fig, ax = plt.subplots()
    for p in [1015203050100]:
        ax.plot(x, function(x, p), label=p)
    ax.legend(title='Order')
    ax.autoscale(tight=True)
    ax.set(**pparam)
    fig.savefig('figures/fig5.pdf')
    fig.savefig('figures/fig5.jpg', dpi=300)

代码下载链接:https://pan.baidu.com/s/1m0ifGg9WfddSTAfa3qdn5Q  密码:pxxg

精选文章

系列视频|Python网络爬虫与文本数据分析
B站视频 | Python自动化办公
bsite库 | 采集B站视频信息、评论数据
texthero包 | 支持dataframe的文本分析包
爬虫实战 | 采集&可视化知乎问题的回答
pdf2docx库 | 转文件格式,支持抽取文件中的表格数据
rpy2库 | 在jupyter中调用R语言代码
tidytext | 耳目一新的R-style文本分析库
reticulate包 | 在Rmarkdown中调用Python代码
plydata库 | 数据操作管道操作符>>
plotnine: Python版的ggplot2作图库
七夕礼物 | 全网最火的钉子绕线图制作教程
读完本文你就了解什么是文本分析
文本分析在经管领域中的应用概述  
综述:文本分析在市场营销研究中的应用
plotnine: Python版的ggplot2作图库
小案例: Pandas的apply方法  
stylecloud:简洁易用的词云库 
用Python绘制近20年地方财政收入变迁史视频  
Wow~70G上市公司定期报告数据集
漂亮~pandas可以无缝衔接Bokeh  
YelpDaset: 酒店管理类数据集10+G  

    分享”和“在看”是更好的支持

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存